package com.ruoyi.ldzlsb.service;

import java.util.List;
import com.ruoyi.ldzlsb.domain.SbInspectionPlan;
import com.ruoyi.ldzlsb.domain.SbInspectionRecord;

/**
 * 巡检计划Service接口
 * 
 * @author anli
 * @date 2025-01-11
 */
public interface ISbInspectionPlanService 
{
    /**
     * 查询巡检计划
     * 
     * @param planId 巡检计划主键
     * @return 巡检计划
     */
    public SbInspectionPlan selectSbInspectionPlanByPlanId(Long planId);

    /**
     * 查询巡检计划列表
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanList(SbInspectionPlan sbInspectionPlan);

    /**
     * 查询巡检计划列表（包含关联信息）
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 巡检计划集合
     */
    public List<SbInspectionPlan> selectSbInspectionPlanWithInfoList(SbInspectionPlan sbInspectionPlan);

    /**
     * 新增巡检计划
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 结果
     */
    public int insertSbInspectionPlan(SbInspectionPlan sbInspectionPlan);

    /**
     * 修改巡检计划
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 结果
     */
    public int updateSbInspectionPlan(SbInspectionPlan sbInspectionPlan);

    /**
     * 批量删除巡检计划
     * 
     * @param planIds 需要删除的巡检计划主键集合
     * @return 结果
     */
    public int deleteSbInspectionPlanByPlanIds(Long[] planIds);

    /**
     * 删除巡检计划信息
     * 
     * @param planId 巡检计划主键
     * @return 结果
     */
    public int deleteSbInspectionPlanByPlanId(Long planId);

    /**
     * 检查巡检计划编号是否唯一
     * 
     * @param sbInspectionPlan 巡检计划
     * @return 结果
     */
    public boolean checkPlanCodeUnique(SbInspectionPlan sbInspectionPlan);

    /**
     * 生成巡检计划编号
     * 
     * @return 巡检计划编号
     */
    public String generatePlanCode();

    /**
     * 根据设备ID查询巡检计划
     * 
     * @param equipmentId 设备ID
     * @return 巡检计划列表
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByEquipmentId(Long equipmentId);

    /**
     * 根据巡检人员ID查询巡检计划
     * 
     * @param inspectorId 巡检人员ID
     * @return 巡检计划列表
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByInspectorId(Long inspectorId);

    /**
     * 根据配置ID查询巡检计划
     * 
     * @param configId 配置ID
     * @return 巡检计划列表
     */
    public List<SbInspectionPlan> selectSbInspectionPlanByConfigId(Long configId);

    /**
     * 根据巡检计划创建巡检单
     * 
     * @param plan 巡检计划
     * @return 巡检单
     */
    public SbInspectionRecord createInspectionRecordFromPlan(SbInspectionPlan plan);
} 